class sKeyFrame {
  ArrayList<Integer> listaFrames;
  int currentFrameSet=0;

  sKeyFrame() {
    listaFrames = new ArrayList<Integer>();
  }

  void add(int valorKey) {
    if (listaFrames.size()>0) {
      if (listaFrames.get(listaFrames.size()-1)<valorKey) {
        listaFrames.add(valorKey);//añadimos key frame
      }
    }
    if (listaFrames.size()==0) {
      listaFrames.add(valorKey);
    }
  }

  void modificaKeyFrame(int antiguo, int nuevo) {
    for (int i=0; i<listaFrames.size(); i++) {
      if (listaFrames.get(i)==antiguo) {
        listaFrames.set(i, nuevo);
        break;
      }
    }
  }

  void modificaKeyFramebyIndex(int index, int nuevo) {
    listaFrames.set(index, nuevo);
  }

  private boolean isPar(int frame) {
    return (frame%2==0);
  }

  private boolean isImpar(int frame) {
    return (!isPar(frame));
  } 

  boolean isBegin(int frame) {
    return(isImpar(frame));
  }

  boolean isEnd(int frame) {
    return(isImpar(frame));
  }

  int numberOfKeyFrames() {
    return listaFrames.size();
  }

  void dump() {
    PrintWriter output;
    output = createWriter("keyFrames.txt");
    for (int i=0; i<listaFrames.size(); i++) {
      if (isPar(i)) {
        output.print(listaFrames.get(i)+","); // Escribe el inicio del keyFrame
      }
      else {
        output.println(listaFrames.get(i)); // Escribe el fin del keyFrame y salta de linea
      }
    }
    output.flush(); // vuelca la lista de keyframes
    output.close(); // cierra el fichero
  }

  void readKeyFrames() {
    String parKeyFrames[] = loadStrings("keyFrames.txt");
    if (parKeyFrames!=null) {
      for (int i=0; i < parKeyFrames.length; i++) {
        String[] keyFrames = split(parKeyFrames[i], ',');
        add(int(keyFrames[0]));
        add(int(keyFrames[1]));
      }
    }
  }
}

